/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloCandidato;
import com.ipartek.formacion.gestformwww.modelo.ModeloContacto;
import com.ipartek.formacion.gestformwww.modelo.ModeloConvocatoria;
import com.ipartek.formacion.gestformwww.modelo.beans.Contacto;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 *
 * @author Ekaitz y Santi
 */
public class VisualizarContactoAccion implements Accion {
    /**
     * Carga los datos del candidato seleccionado, si existe el usuario, el candidato y la convocatoria te muestra el usuario, si hay algun error te devuelve a la lista.
     * @param servlet
     * @param request
     * @param response
     * @return Devuelve el router que llevara el nombre de la jsp que corresponda
     */
    public final static String listarContactosPath = "listar-contactos-accion";

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion;
        AccionServlet as = (AccionServlet) servlet;
        sesion = request.getSession();
        AccionRouter router;
        String path = null;
        int contactoId = 0;
        ModeloContacto modelo = (ModeloContacto) servlet.getServletContext().getAttribute("ModeloContacto");
        ModeloConvocatoria modeloConvocatoria = (ModeloConvocatoria) servlet.getServletContext().getAttribute("ModeloConvocatoria");
        ModeloCandidato modeloCandidato = (ModeloCandidato) servlet.getServletContext().getAttribute("ModeloCandidato");
        Contacto contactoMostrar = new Contacto();

        String nombreConvocatoria = "";
        String nombreCandidato = "";

        if (sesion.getAttribute("usuario") == null) {
            router = new AccionRouter("inicio", false);
        } else {
            router = new AccionRouter("principal");

            if (Verificador.numeroValido(request.getParameter("contactoId"))) {
              
                if (request.getAttribute("contactoId") != null) {
                    contactoId = (Integer) request.getAttribute("contactoId");
                } else {
                    contactoId = Integer.parseInt(request.getParameter("contactoId"));
                }

                try {
                   
                    contactoMostrar = modelo.getContacto(contactoId);
                    nombreConvocatoria = modeloConvocatoria.visualizarConvocatoria(contactoMostrar.getConvId()).getConNom();
                    contactoMostrar.setNomConvocatoria(nombreConvocatoria);
                    nombreCandidato = modeloCandidato.visualizarCandidato(contactoMostrar.getCanId(), contactoMostrar.getConvId()).getCanNom();
                } catch (GestorFormacionExcepcion ex) {
                    sesion.setAttribute("excepciones", ex.getMessage());
                    Logger.getLogger(VisualizarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                }
                //  si mostrar no da errores
                if (contactoMostrar != null) {
                    request.setAttribute("nombreConvocatoria", nombreConvocatoria);// Si no hay conexion da error en esta linea
                    request.setAttribute("nombreCandidato", nombreCandidato);
                    request.setAttribute("contactoId", contactoId);
                    request.setAttribute("contenido", "visualiza-contacto");
                    request.setAttribute("fechaContacto", contactoMostrar.getFechaCon());
                    request.setAttribute("observaciones", contactoMostrar.getObs());
                    request.setAttribute("contactoMostrar", contactoMostrar);


                } else {

                    try {
                        request.setAttribute("canId", request.getParameter("canId"));
                        path = listarContactosPath;
                        router = as.getFactory().getAction(as.getNombreClaseRecurso(path), servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(VisualizarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (InstantiationException ex) {
                        Logger.getLogger(VisualizarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalAccessException ex) {
                        Logger.getLogger(VisualizarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }

            }

        }
    return router;
    }
}
